// src/stores/tokenStore.js
import { defineStore } from 'pinia'

export const useTokenStore = defineStore('auth', {
    state: () => ({
        // 初始化时从本地存储读取（插件会自动处理，无需手动getItem）
        token: '',
        role: ''
    }),
    actions: {
        // 设置token（自动添加Bearer前缀？不，后端要求请求头带前缀，token本身不带）
        setToken(token,role) {
            this.token = token // 存储纯token（不含Bearer）
            this.role = role
        },
        // 清除token
        removeToken() {
            this.token = ''
            this.role = ''
        },
        // 获取带Bearer前缀的token（供请求头使用）
        getAuthHeader() {
            return this.token ? `Bearer ${this.token}` : ''
        },
        // 检查是否已登录
        isLoggedIn() {
            return !!this.token
        },
        // 检查是否为管理员
        isAdmin() {
            return this.role === 'admin'
        },
        // 检查是否为普通用户
        isUser() {
            return this.role === 'user'
        }
    },
    // 关键：配置持久化（使用pinia-plugin-persistedstate）
    persist: {
        enabled: true, // 开启持久化
        storage: localStorage, // 长期存储（避免页面刷新丢失）
        key: 'auth_token', // 本地存储的键名（与后端Redis的键名无关，前端自己管理）
        paths: ['token', 'role'] // 同时持久化token和role字段
    }
})